<?php

declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class ProfitShareReceiver extends AbstractMigration
{
    /**
     * Change Method.
     *
     * Write your reversible migrations using this method.
     *
     * More information on writing migrations is available here:
     * https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method
     *
     * Remember to call "create()" or "update()" and NOT "save()" when working
     * with the Table class.
     */
    public function change(): void
    {
        $this->table('profit_share_receiver', ['comment' => '分账接收方'])
            ->addColumn('user_id', 'integer', ['null' => false, 'signed' => false, 'comment' => '用户ID'])
            ->addColumn('action', 'enum', ['null' => false, 'default' => 'add', 'values' => ['add', 'update'], 'comment' => '操作类型'])
            ->addColumn('order_no', 'string', ['null' => false, 'limit' => 22, 'comment' => '订单编号'])
            ->addColumn('org_code', 'string', ['null' => false, 'limit' => 32, 'comment' => '机构编号'])
            ->addColumn('receiver_name', 'string', ['null' => false, 'limit' => 64, 'comment' => '分账接收方名称'])
            ->addColumn('contact_mobile', 'string', ['null' => false, 'limit' => 16, 'comment' => '联系手机号'])
            ->addColumn('acct_no', 'string', ['null' => false, 'limit' => 32, 'comment' => '收款账户卡号'])
            ->addColumn('acct_name', 'string', ['null' => false, 'limit' => 32, 'comment' => '收款账户名称'])
            ->addColumn('acct_type_code', 'string', ['null' => false, 'limit' => 32, 'default' => '58', 'comment' => '收款账户账户类型(57：对公 58：对私)'])
            ->addColumn('acct_certificate_type', 'string', ['null' => false, 'limit' => 32, 'default' => '17', 'comment' => '收款账户证件类型 17 身份证，18 护照，19 港澳居民来往内地通行证 20 台湾居民来往内地通行证'])
            ->addColumn('acct_certificate_no', 'string', ['null' => false, 'limit' => 32, 'comment' => '收款账户证件号'])
            ->addColumn('acct_open_bank_code', 'string', ['null' => true, 'limit' => 32, 'comment' => '收款账户开户行号'])
            ->addColumn('acct_open_bank_name', 'string', ['null' => false, 'limit' => 64, 'comment' => '收款账户开户行名称'])
            ->addColumn('acct_clear_bank_code', 'string', ['null' => true, 'limit' => 32, 'comment' => '收款账户清算行行号'])
            ->addColumn('settle_type', 'string', ['null' => false, 'limit' => 32, 'default' => '01', 'comment' => '提款类型 01：主动提款 03：交易自动结算'])
            ->addColumn('org_id', 'string', ['null' => true, 'limit' => 32,  'comment' => '接收方所属机构'])
            ->addColumn('org_name', 'string', ['null' => true, 'limit' => 32, 'comment' => '接收方所属机构名称'])
            ->addColumn('receiver_no', 'string', ['null' => true, 'limit' => 32, 'comment' => '接收方编号'])
            ->addColumn('status', 'integer', ['signed' => false, 'default' => 1, 'comment' => '状态 1: 待审核 2:提交中 3: 验证通过 4: 验证失败 5:绑定中 6: 绑定成功 7: 绑定失败'])
            ->addColumn('fail_reason', 'string', ['null' => true, 'limit' => 255, 'comment' => '失败原因'])
            ->addColumn('entrust_file_name', 'string', ['null' => true, 'limit' => 100, 'comment' => '合作协议附件名称'])
            ->addColumn('entrust_file_path', 'string', ['null' => true, 'limit' => 255, 'comment' => '合作协议附件路径'])
            ->addColumn('entrust_local_path', 'string', ['null' => true, 'limit' => 255, 'comment' => '合作协议附件本地路径'])
            ->addColumn('wallet_id', 'string', ['null' => true, 'limit' => 32, 'comment' => '钱包ID'])
            ->addColumn('effective_time', 'timestamp', ['null' => true, 'comment' => '生效时间'])
            ->addTimestamps('create_time', 'update_time')
            ->addColumn('delete_time', 'timestamp', ['null' => true, 'comment' => '删除时间'])
            ->addIndex('user_id', ['name' => 'idx_user_id'])
            ->addIndex('order_no', ['name' => 'idx_order_no', 'unique' => true])
            ->create();
    }
}
